1
|
|
|
import DataStorage from '@enbock/simple-storage/DataStorage'; |
2
|
|
|
import ListenerAdapter from '@enbock/state-value-observer/ListenerAdapter'; |
3
|
|
|
import ValueObserver from '@enbock/state-value-observer/ValueObserver'; |
4
|
|
|
import AjaxLoader from './Loader/Ajax'; |
5
|
|
|
import Manager from './Manager'; |
6
|
|
|
import ActiveTranslatorAdapter from './Manager/ActiveTranslatorAdapter'; |
7
|
|
|
import Translator from './Translator'; |
8
|
|
|
import TranslatorFactory from './Translator/Factory'; |
9
|
|
|
|
10
|
|
|
class Container { |
11
|
|
|
translatorFactory: TranslatorFactory; |
12
|
|
|
loader: AjaxLoader; |
13
|
|
|
manager: Manager; |
14
|
|
|
adapter: ListenerAdapter<string>; |
15
|
|
|
observer: ValueObserver<string>; |
16
|
|
|
activeTranslator: ValueObserver<Translator>; |
17
|
|
|
activeTranslatorAdapter: ActiveTranslatorAdapter; |
18
|
|
|
storage: DataStorage; |
19
|
|
|
|
20
|
|
|
constructor() { |
21
|
1 |
|
this.storage = new DataStorage('language', window.localStorage); |
22
|
|
|
|
23
|
1 |
|
this.translatorFactory = new TranslatorFactory(); |
24
|
1 |
|
this.loader = new AjaxLoader(); |
25
|
1 |
|
this.manager = new Manager(this.loader, this.translatorFactory); |
26
|
|
|
|
27
|
1 |
|
this.adapter = new ListenerAdapter<string>(); |
28
|
1 |
|
this.activeTranslator = new ValueObserver<Translator>( |
29
|
|
|
new Translator({}), |
30
|
|
|
{onChange: (newValue: Translator): void => {}} |
31
|
|
|
); |
32
|
1 |
|
this.activeTranslatorAdapter = new ActiveTranslatorAdapter(this.adapter, this.manager, this.activeTranslator); |
33
|
1 |
|
this.observer = |
34
|
|
|
new ValueObserver<string>('', this.storage.attach<string>('languageSetup', this.activeTranslatorAdapter)); |
35
|
|
|
|
36
|
1 |
|
this.setupDefaults(); |
37
|
|
|
} |
38
|
|
|
|
39
|
|
|
protected setupDefaults(): void { |
40
|
1 |
|
this.observer.value = this.storage.loadData<string>('languageSetup', 'de-de'); |
41
|
|
|
} |
42
|
|
|
} |
43
|
|
|
|
44
|
|
|
export default new Container(); |
45
|
|
|
|